This invention relates to the area of data processing systems, and, more specifically, to service creation, modification, and execution in operating data processing systems.
Data processing systems span a wide spectrum of service areas including telecommunications, financial services (including banking), marketing, insurance, travel, and sales. A modern data processing system must provide a multitude of services that achieve the needs of its customers. Because the needs are many and change over time, it is desirable that a data processing system allows for flexibility in creation and modification of services. Such addition and modification of services is called xe2x80x9cservice creationxe2x80x9d in the art.
Typically, a data processing system detects an input event that initiates one or more services and subsequent input events as the services continue. Examples include a customer requesting cash from an ATM machine (associated with the area of banking) or an incoming call for a telephone customer (corresponding to the area of telecommunications). Moreover, with the popularity of open interfaces (e.g. the application programming interface (API) offered by the class libraries available in the Java programming language) and with the ubiquitous presence of data networking (such as the Internet), service creation is not limited only to the manufacturer of the data processing system and has expanded to third-party programmability of services. With open interfaces, services can be developed faster because third-party programmers, who otherwise would not be able to participate in the development activities, can also support software development.
One problem with service creation that has limited its application is that any added functionality may conflict with existing functionality. These conflicts may be innocuous, such as a brief delay in the service, or may cause the service to stop functioning altogether. In the current art, there is no manner to avoid such conflicts without hours of regression testing in a laboratory environment.
In the current art, services for a data processing system may be implemented with object-oriented languages such as C++ and Java. Object-oriented languages offer the advantage of simplifying programming and increasing code reuse by associating an object""s data and code into one variable. (An object is commonly referred as a software entity having attributes and at least one xe2x80x9cmethodxe2x80x9d or xe2x80x9coperation,xe2x80x9d which may process some of the attributes.) The code can be reused in another unrelated program. However, object-oriented languages do not directly support a flexible grouping of objects to cooperate in responding to an input event that corresponds to one or more services. The LISP programming language does support limited grouping of objects that are parts of a single object and that belong to super-classes of the object""s class. However, the LISP programming language offers only a rigid, pre-structured precedence scheme or an unstructured one. Moreover, an object can be invoked only once for an event. Enhancing the capability of grouping objects from potentially disparate sources will enhance the flexibility and facilitation of creating and modifying services.
With the development of software by third-party programmers, applications software may utilize objects that are written in different programming languages. Prior art does not support object preference across a plurality of programming languages. An invention that supports object preference and allows the multiple invocation of one or more objects, to serve multiple roles in reacting to an event, would facilitate the structuring and control of feature interactions.
The competition of the marketplace is keen and requires fast delivery of new services and the modifications of existing services. Thus, the marketplace beckons for innovations that address the heretofore objectives.
The present invention provides an apparatus and method to enhance service creation, modification, and execution in a data processing system. Applicable service areas include telecommunications, financial services, marketing, insurance, travel, and sales. The present invention enables services to be implemented by the grouping of objects to enhance cooperation and thus avoid conflict in response to an input event that is associated with the service. Moreover, the service can be associated with a plurality of events.
The present invention advances a service creation and execution environment which facilitates the addition of new service functionality on a bus structure in a manner which allows the specification of precedence in handling events, with regards to existing functionality, to resolve conflicts. Objects corresponding to services are configured on one or more of the sub-busses that are connected to a service logic component bus, to specify their roles and precedence with regards to other objects on the service logic component bus. Further flexibility is provided through configuring the objects on multiple service logic component buses such that each event is assigned to a service logic component bus or that each customer group is assigned to a service logic component bus. The present invention allows for the flexibility of arranging objects on sub-buses, including the ability of a given object to play multiple roles in reacting to an event associated with one or more services. The flexibility of arranging objects to specify their roles and precedence with regards to other objects in responding to events facilitates development of software by third-party programmers, including software in which objects are written in different programming languages.
An exemplary embodiment of the invention utilizes a bus arrangement comprising a set of service logic busses, each connected to a pre-process sub-bus, a determine-response sub-bus, a post-process sub-bus, each sub-bus corresponding to a specified role for the objects on the sub-bus to play in responding to the event. A role is a classification of service functionality to which this invention assigns a position in the time-order of execution of an object invocation algorithm. Examples of object invocation algorithms are xe2x80x9cinvoke all objects playing this rolexe2x80x9d and xe2x80x9cinvoke objects playing this role until one answers xe2x80x98completedxe2x80x99.xe2x80x9d In the exemplary embodiment, an object may participate in responding to an event by playing one, two, or three roles: the role of pre-processing an event before the response has been determined, the role of determining the response to an event, or the role of post-processing the event after the response has been determined.
Pursuant to detecting an event associated with the service, a message representing the event traverses the service logic bus arrangement corresponding to the specific event. The message is processed by the objects configured on the pre-process sub-bus, the determine-response sub-bus, and the post-process sub-bus. Having traversed the bus arrangement, an applications program determines a response, resulting with at least one action being executed.
Several examples of the exemplary embodiment are presented. The first example is associated with financial services in which a customer requests an ATM machine to dispense cash. The second example is associated with telecommunications services in which a telephone user subscribes to multiple services, including a call waiting feature, a call screening feature, and a call forwarding feature.